public class TiHuanKongGe {
    /*
    * 替换空格
    * 请实现一个函数，把字符串 s 中的每个空格替换成"%20"。
    * 0 <= s 的长度 <= 10000
    * */
    public static void main(String[] args){

    }

    // 我的想法：变长字符串，使用StringBuilder
    public String mySolution(String s){
        if(s==null)
            return null;
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            sb.append(s.charAt(i) == ' '? "%20" : s.charAt(i));
        }
        return sb.toString();
    }

    // 双指针, 统计空格数，得到最终字符串长度，然后从末尾开始双指针报听写
    // 感觉这个方法在java里和上面的方法区别不算大，
    public String solution(String s){
        if(s==null)
            return null;
        // 统计空格数
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == ' ')
                count++;
        }
        // 构造边长字符串
        StringBuilder builder = new StringBuilder(s.length() + count * 2);
        for (int i = 0; i < s.length(); i++) {
            builder.append(s.charAt(i) == ' '? "%20" : s.charAt(i));
        }
        return builder.toString();
    }
}
